home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-06-14 | 5.9 KB | 220 lines | [TEXT/CWIE] |
- .\" Copyright (c) 1990, 1993
- .\" The Regents of the University of California. All rights reserved.
- .\"
- .\" Redistribution and use in source and binary forms, with or without
- .\" modification, are permitted provided that the following conditions
- .\" are met:
- .\" 1. Redistributions of source code must retain the above copyright
- .\" notice, this list of conditions and the following disclaimer.
- .\" 2. Redistributions in binary form must reproduce the above copyright
- .\" notice, this list of conditions and the following disclaimer in the
- .\" documentation and/or other materials provided with the distribution.
- .\" 3. All advertising materials mentioning features or use of this software
- .\" must display the following acknowledgement:
- .\" This product includes software developed by the University of
- .\" California, Berkeley and its contributors.
- .\" 4. Neither the name of the University nor the names of its contributors
- .\" may be used to endorse or promote products derived from this software
- .\" without specific prior written permission.
- .\"
- .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- .\" SUCH DAMAGE.
- .\"
- .\" @(#)mpool.3 8.1 (Berkeley) 6/4/93
- .\"
- .TH MPOOL 3 "June 4, 1993"
- .UC 7
- .SH NAME
- mpool \- shared memory buffer pool
- .SH SYNOPSIS
- .nf
- .ft B
- #include <db.h>
- #include <mpool.h>
-
- MPOOL *
- mpool_open (DBT *key, int fd, pgno_t pagesize, pgno_t maxcache);
-
- void
- mpool_filter (MPOOL *mp, void (*pgin)(void *, pgno_t, void *),
- .ti +5
- void (*pgout)(void *, pgno_t, void *), void *pgcookie);
-
- void *
- mpool_new (MPOOL *mp, pgno_t *pgnoaddr);
-
- void *
- mpool_get (MPOOL *mp, pgno_t pgno, u_int flags);
-
- int
- mpool_put (MPOOL *mp, void *pgaddr, u_int flags);
-
- int
- mpool_sync (MPOOL *mp);
-
- int
- mpool_close (MPOOL *mp);
- .ft R
- .fi
- .SH DESCRIPTION
- .IR Mpool
- is the library interface intended to provide page oriented buffer management
- of files.
- The buffers may be shared between processes.
- .PP
- The function
- .I mpool_open
- initializes a memory pool.
- The
- .I key
- argument is the byte string used to negotiate between multiple
- processes wishing to share buffers.
- If the file buffers are mapped in shared memory, all processes using
- the same key will share the buffers.
- If
- .I key
- is NULL, the buffers are mapped into private memory.
- The
- .I fd
- argument is a file descriptor for the underlying file, which must be seekable.
- If
- .I key
- is non-NULL and matches a file already being mapped, the
- .I fd
- argument is ignored.
- .PP
- The
- .I pagesize
- argument is the size, in bytes, of the pages into which the file is broken up.
- The
- .I maxcache
- argument is the maximum number of pages from the underlying file to cache
- at any one time.
- This value is not relative to the number of processes which share a file's
- buffers, but will be the largest value specified by any of the processes
- sharing the file.
- .PP
- The
- .I mpool_filter
- function is intended to make transparent input and output processing of the
- pages possible.
- If the
- .I pgin
- function is specified, it is called each time a buffer is read into the memory
- pool from the backing file.
- If the
- .I pgout
- function is specified, it is called each time a buffer is written into the
- backing file.
- Both functions are are called with the
- .I pgcookie
- pointer, the page number and a pointer to the page to being read or written.
- .PP
- The function
- .I mpool_new
- takes an MPOOL pointer and an address as arguments.
- If a new page can be allocated, a pointer to the page is returned and
- the page number is stored into the
- .I pgnoaddr
- address.
- Otherwise, NULL is returned and errno is set.
- .PP
- The function
- .I mpool_get
- takes a MPOOL pointer and a page number as arguments.
- If the page exists, a pointer to the page is returned.
- Otherwise, NULL is returned and errno is set.
- The flags parameter is not currently used.
- .PP
- The function
- .I mpool_put
- unpins the page referenced by
- .IR pgaddr .
- .I Pgaddr
- must be an address previously returned by
- .I mpool_get
- or
- .IR mpool_new .
- The flag value is specified by
- .IR or 'ing
- any of the following values:
- .TP
- MPOOL_DIRTY
- The page has been modified and needs to be written to the backing file.
- .PP
- .I Mpool_put
- returns 0 on success and -1 if an error occurs.
- .PP
- The function
- .I mpool_sync
- writes all modified pages associated with the MPOOL pointer to the
- backing file.
- .I Mpool_sync
- returns 0 on success and -1 if an error occurs.
- .PP
- The
- .I mpool_close
- function free's up any allocated memory associated with the memory pool
- cookie.
- Modified pages are
- .B not
- written to the backing file.
- .I Mpool_close
- returns 0 on success and -1 if an error occurs.
- .SH ERRORS
- The
- .I mpool_open
- function may fail and set
- .I errno
- for any of the errors specified for the library routine
- .IR malloc (3).
- .PP
- The
- .I mpool_get
- function may fail and set
- .I errno
- for the following:
- .TP 15
- [EINVAL]
- The requested record doesn't exist.
- .PP
- The
- .I mpool_new
- and
- .I mpool_get
- functions may fail and set
- .I errno
- for any of the errors specified for the library routines
- .IR read (2) ,
- .IR write (2) ,
- and
- .IR malloc (3).
- .PP
- The
- .I mpool_sync
- function may fail and set
- .I errno
- for any of the errors specified for the library routine
- .IR write (2).
- .PP
- The
- .I mpool_close
- function may fail and set
- .I errno
- for any of the errors specified for the library routine
- .IR free (3).
- .SH "SEE ALSO"
- .IR dbopen (3),
- .IR btree (3),
- .IR hash (3),
- .IR recno (3)
-